[Сервер] Настройка маскировки Fallback для 3X-UI Nginx

1. Подготовка заглушки

Для начала создаём каталог, где будет лежать наш сайт.

mkdir -p /var/www/html

Далее есть два пути:

echo "<h1>Site is under construction</h1>" > /var/www/html/index.html

Важно: После загрузки файлов любым способом, обязательно обнови права доступа, чтобы Nginx не выдал ошибку 403:

chmod -R 755 /var/www/html
chown -R www-data:www-data /var/www/html

2. Установка и настройка Nginx

Устанавливаем сервер и настраиваем его на работу на внутреннем порту 8888.

apt update && apt install nginx -y

# Создаём конфиг для заглушки
cat <<EOF > /etc/nginx/conf.d/fallback.conf
server {
    listen 8888;
    server_name server.tonicman.ru; # Твой домен

    root /var/www/html;
    index index.html;

    location / {
        proxy_http_version 1.1;
        proxy_set_header Connection "";
        try_files \$uri \$uri/ =404;
    }
}
EOF

systemctl restart nginx

3. Настройка Firewall (Опционально)

Если на сервере включён фаервол, нужно открыть порты. Если фаервола нет, этот шаг можно пропустить.

ufw allow 80/tcp
ufw allow 443/tcp
ufw reload

4. Настройка 3X-UI (Inbound 443)

Заходим в настройки подключения и заполняем блоки:

Блок Fallbacks (Верхняя часть окна)

Здесь мы указываем, куда отправлять обычных пользователей:

Блок Security (Нижняя часть окна)

Здесь выбираем один из двух способов работы:Способ А: Обычный TLS (как настроено сейчас)

Способ Б: REALITY (маскировка под чужой сайт)

(Этот способ используется, если у тебя нет своего сертификата или нужно скрыть факт его наличия).

5. Важные примечания

Проверка порта: Если страница не грузится, проверь командой ss -tulnp | grep 443, что порт занят процессом xray, а не nginx.
Протоколы: Если браузер выдаёт ошибку стрима, убедись, что в Fallback очищено поле ALPN.
Перезапуск: После любых изменений в панели 3X-UI обязательно нажимай кнопку Restart Xray.

6. Продвинутый уровень: Создание экосистемы (Multi-Service Config)

Если вы хотите превратить свой сервер в настоящий комбайн и обращаться к разным сервисам через один домен (например, домен.ru/games/ или домен.ru/blog/), используйте эту расширенную конфигурацию Nginx.

Замените содержимое файла 

nano /etc/nginx/conf.d/fallback.conf 

следующим кодом:

server {
    listen 8888;
    server_name server.tonicman.ru;

    # Отключаем подстановку порта 8888 в автоматических редиректах
    port_in_redirect off;

    root /var/www/html;
    index index.html;

    # 1. Основной сайт
    location / {
        try_files $uri $uri/ =404;
    }

# 2. YT Downloader
    location /ytdl/ {
        proxy_pass http://127.0.0.1:8000/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;

        # Увеличиваем лимит на загрузку файлов (например, для больших cookies.txt)
        client_max_body_size 100M;

        # Таймауты, чтобы Nginx не обрывал связь при долгой загрузке больших видео
        proxy_connect_timeout 900s;
        proxy_send_timeout 900s;
        proxy_read_timeout 900s;

        # Отключаем буферизацию, чтобы прогресс загрузки и поток видео передавались мгновенно
        proxy_buffering off;
        proxy_request_buffering off;
    }    

    # 3. Статика для блога
    location /blog/static/ {
        proxy_pass http://127.0.0.1:8081/static/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 4. Блог (основной интерфейс)
    location /blog/ {
        client_max_body_size 0;
        proxy_pass http://127.0.0.1:8081/;
        proxy_set_header X-Forwarded-Prefix /blog;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /demo/ {
        client_max_body_size 0;
        proxy_pass http://127.0.0.1:8082/;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Forwarded-Prefix /demo;
    }
    # 6. Визуальный редактор HTML
    location /editor/ {
        proxy_pass http://127.0.0.1:8083/;  # Заменили https на http
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    # 7. Игры
    location /games/ {
        proxy_pass http://127.0.0.1:8086/;  # Заменили https на http
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

}

Разбор ключевых моментов конфигурации: